<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<root version="5">
	<item content="第3章　计划" icon="none" branch="open" block="narrow" level="0" IsShown="true" IsBold="true" ShowBranch="false">
		<item content="http://lsc20051426.javaeye.com/blog/248591" icon="none" branch="none" block="narrow" level="1" IsShown="true" IsBold="false" ShowBranch="false"/>
		<item content="3.1　初始探索" icon="star" branch="open" block="narrow" level="1" IsShown="true" IsBold="false" ShowBranch="false">
			<item content="策略" icon="idea" branch="close" block="narrow" level="2" IsShown="true" IsBold="false" ShowBranch="false">
				<item content="为下两周做详细的计划" icon="none" branch="none" block="narrow" level="3" IsShown="false" IsBold="false" ShowBranch="false"/>
				<item content="为下三个月做粗略的计划" icon="none" branch="none" block="narrow" level="3" IsShown="false" IsBold="false" ShowBranch="false"/>
			</item>
			<item content="1.开发人员和客户会尽量确定出所有真正重要的用户素材。" icon="none" branch="open" block="narrow" level="2" IsShown="true" IsBold="true" ShowBranch="false">
				<item content="然而，他们不会试图去确定所有的用户素材。随着项目的进展，客户会不断编写新的用户素材。素材的编写会一直持续到项目完成。" icon="warning" branch="none" block="narrow" level="3" IsShown="true" IsBold="false" ShowBranch="false"/>
			</item>
			<item content="2.开发人员共同对这些用户素材继续估算开发时间。" icon="none" branch="open" block="narrow" level="2" IsShown="true" IsBold="true" ShowBranch="false">
				<item content="估算是相对的，不是绝对的。我们在记录素材的卡片上写一些“点数”表示实现这个素材的相对时间，我们无法确定每个点数代表的时间，但是我们知道8个点的素材所需要的时间应该是4个点的两倍。" icon="none" branch="none" block="narrow" level="3" IsShown="true" IsBold="false" ShowBranch="false"/>
				<item content="为知道用户素材的绝对大小，需要一个成为速度（velocity）的因子。伴随项目的进展，由于可以度量每次迭代中已经产正的用户素材点数，所以速度的度量会越来越准确。通常，去原型化一到两个用户素材来了解团队的速度就足够了，这样的一个原型化的过程成为探究（spike）。" icon="none" branch="none" block="narrow" level="3" IsShown="true" IsBold="false" ShowBranch="false"/>
				<item content="说得通俗点：就是今天这个任务交给我，我花费了多长时间完成，那么就能更加容易准确确定我完成下一个任务需要耗费的时间。" icon="idea" branch="none" block="narrow" level="3" IsShown="true" IsBold="false" ShowBranch="false"/>
			</item>
			<item content="3.任何过大的素材都应该被分解成小一点的部分，任何过小的素材都应该和其他小的素材进行合并。" icon="none" branch="open" block="narrow" level="2" IsShown="true" IsBold="true" ShowBranch="false">
				<item content="这里的素材我理解就是任务/项目" icon="idea" branch="none" block="narrow" level="3" IsShown="true" IsBold="false" ShowBranch="false"/>
			</item>
		</item>
		<item content="3.2　发布计划　　" icon="star" branch="open" block="narrow" level="1" IsShown="true" IsBold="false" ShowBranch="false">
			<item content="1.提供用户最想先使用到的功能" icon="none" branch="open" block="narrow" level="2" IsShown="true" IsBold="true" ShowBranch="false">
				<item content="用户素材实现顺序的选择不是单纯依据优先级进行的，一些重要的但是实现起来代价高昂的素材可能会被推迟实现，而会先去实现一些不那么重要的，但是代价要低廉得多的素材。此类选择属于商务（business）决策范畴。让业务人员来选定那些会给他们带来最大利益的素材。" icon="none" branch="none" block="narrow" level="3" IsShown="true" IsBold="false" ShowBranch="false"/>
			</item>
			<item content="2.当开发速度变得更准确一点的时候，可以对发布计划进行相应的调整。" icon="none" branch="none" block="narrow" level="2" IsShown="true" IsBold="true" ShowBranch="false"/>
		</item>
		<item content="3.3　迭代计划" icon="star" branch="open" block="narrow" level="1" IsShown="true" IsBold="false" ShowBranch="false">
			<item content="1.开发人员和客户决定迭代规模，一般需两周。" icon="none" branch="open" block="narrow" level="2" IsShown="true" IsBold="true" ShowBranch="false">
				<item content="迭代期间用户素材的实现顺序属于技术决策范畴，开发人员采用最具技术意义的顺序来实现这些素材。" icon="none" branch="none" block="narrow" level="3" IsShown="true" IsBold="false" ShowBranch="false"/>
				<item content="一旦迭代开始，客户就不能再改变迭代期内需要实现的素材。" icon="none" branch="none" block="narrow" level="3" IsShown="true" IsBold="false" ShowBranch="false"/>
			</item>
			<item content="2.即使没有完成所有的素材，迭代也要在先前指定的日期结束。" icon="none" branch="open" block="narrow" level="2" IsShown="true" IsBold="true" ShowBranch="false">
				<item content="开发人员会合计所有已经完成的素材的估算值，然后计算本次迭代的开发速度，这个速度会被用于下次迭代。规则很简单：每次迭代做计划时采用的开发速度就是前一次迭代中测算出的开发速度。" icon="none" branch="none" block="narrow" level="3" IsShown="true" IsBold="false" ShowBranch="false"/>
			</item>
		</item>
		<item content="3.4　任务计划　　　　" icon="star" branch="open" block="narrow" level="1" IsShown="true" IsBold="false" ShowBranch="false">
			<item content="1.在新的迭代开始时，开发人员和客户共同制定计划。开发人员把素材分解成开发任务，一个任务就是一个开发人员能够在4－16个小时内实现的一些功能。" icon="none" branch="none" block="narrow" level="2" IsShown="true" IsBold="true" ShowBranch="false"/>
			<item content="2.每个开发人员都知道在最近一次迭代中完成的任务点数，这个数字可以作为下一次迭代中的个人预算。" icon="none" branch="none" block="narrow" level="2" IsShown="true" IsBold="true" ShowBranch="false"/>
			<item content="3.任务的选择一直到所有的任务都被分配出去，或者所有的开发人员都已经用完了他们的预算时为止。" icon="none" branch="open" block="narrow" level="2" IsShown="true" IsBold="true" ShowBranch="false">
				<item content="如果任务还没有分配完毕，那么会互相协商，开发人员将基于各自的特长交换相应的任务。如果还是有多余任务，那么就将考虑要求客户从本次迭代中去掉一些任务或者素材。如果所有的任务都已经被分配，并且开发人员仍然具有预算空间去完成更多的任务，那么他们将会向客户要求更多的素材。" icon="none" branch="none" block="narrow" level="3" IsShown="true" IsBold="false" ShowBranch="false"/>
			</item>
			<item content="4.迭代的中点" icon="none" branch="open" block="narrow" level="2" IsShown="true" IsBold="true" ShowBranch="false">
				<item content="在迭代进行到一半的时候，团队必须召开会议查看所完成的素材（并非是任务，因为任务完成了一半，素材却都没有完成的情况，是毫无意义的）数量，应该是一半的素材都被完成，如果没有，那么团队应该设法重新分配没有完成的任务和职责，以保证在迭代结束时能够完成所有的素材。" icon="none" branch="none" block="narrow" level="3" IsShown="true" IsBold="false" ShowBranch="false"/>
			</item>
		</item>
		<item content="3.5　迭代" icon="star" branch="open" block="narrow" level="1" IsShown="true" IsBold="false" ShowBranch="false">
			<item content="每两周，本次迭代结束，下次迭代开始。在每次迭代结束时，会给客户演示客户演示当前可运行的程序。客户将会根据他们看到的反馈新的用户素材。" icon="none" branch="none" block="narrow" level="2" IsShown="true" IsBold="true" ShowBranch="false"/>
		</item>
		<item content="3.6　结论　　" icon="star" branch="open" block="narrow" level="1" IsShown="true" IsBold="false" ShowBranch="false">
			<item content="1.通过一次次迭代和发布，项目进入了一种可以预测的、舒适的开发节奏。" icon="none" branch="none" block="narrow" level="2" IsShown="true" IsBold="true" ShowBranch="false"/>
			<item content="2.使用敏捷方法并不意味着涉众就可以得到他们想要的。它不过意味着他们将能够控制着团队以最小的代价获得最大的商业价值。" icon="none" branch="none" block="narrow" level="2" IsShown="true" IsBold="true" ShowBranch="false"/>
		</item>
	</item>
</root>
